package main

/**
1、byte：占用一个字节，8个比特位（2^8 = 256，byte的表示范围 0-255，表示的是ACSII表中的一个字符）
	（和 uint8 类型本质上没有区别）
2、rune：占用4个字节，共32位比特，和int32本质上没有区别。表示的是Unicode字符
	（Unicode是一个可以表示世界范围内的绝大部分字符的编码规范）

通俗：uint8 和 uint32,直观上让人认为是一个数值，实际上，也可以表示一个字符，为了消除这种直观上的错觉，诞生了byte和rune类型
*/
import (
	"fmt"
	"unsafe"
)

func main() {
	var a byte = 65
	var b uint8 = 66
	fmt.Printf("a的值：%c \nb的值：%c", a, b)

	/**
	输出结果:
	a的值：A
	b的值：B
	*/
	fmt.Printf("\n============================\n")
	// 上面的输出结果写法，也可以这样写
	var a_1 byte = 'A'
	var b_1 byte = 'B'
	fmt.Printf("a的值：%c \nb的值：%c", a_1, b_1)
	fmt.Printf("\n============================\n")

	var a_2 byte = 'A'
	var b_2 rune = 'B'
	fmt.Printf("a_2 占用 %d 个字节数\nb_2 占用 %d 个字节数", unsafe.Sizeof(a_2), unsafe.Sizeof(b_2))
	fmt.Printf("\n============================\n")

	// 表示中文--只能用rune类型了
	var name rune = '周'
	fmt.Println(name)

}
